﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace QuanLyThietBi
{
    public partial class frmquanlyphieunhap : Form
    {
        SqlConnection con;
        CXuly_loaivattu xulyloaivattu;
        CXuly_vattu xulyvattu;
        CXuly_phieunhap xulyphieunhap;
        public frmquanlyphieunhap(SqlConnection con)
        {
            InitializeComponent();
            this.con = con;
            xulyloaivattu = new CXuly_loaivattu(con);
            xulyphieunhap = new CXuly_phieunhap(con);
            xulyvattu = new CXuly_vattu(con);
        }
        
        private void frmquanlyphieunhap_Load(object sender, EventArgs e)
        {
            hienthidsphieunhap();
        }
        public void hienthidsphieunhap()
        {
            List<CPhieunhap> ds = xulyphieunhap.getdsphieunhap();
            lstphieunhap.Items.Clear();
            foreach (CPhieunhap x in ds)
            {
                ListViewItem lvi = lstphieunhap.Items.Add(x.Maphieunhap);
                lvi.SubItems.Add(x.Ngaynhap.ToShortDateString());
                lvi.SubItems.Add(x.Tennguoinhap);
            }
        }
        public void hienthidsloaivattu(List<CLoaivattu> list, int rowindex)
        {

            DataGridViewComboBoxCell c = (DataGridViewComboBoxCell)dgv.Rows[rowindex].Cells[0];
            c.DataSource = list;
            c.DisplayMember = "tenloai";
            c.ValueMember = "tenloai";
        }
        public void hienthidsvattu(List<CVattu> list, int rowindex)
        {
            DataGridViewComboBoxCell c = (DataGridViewComboBoxCell)dgv.Rows[rowindex].Cells[1];
            c.DataSource = list;
            c.DisplayMember = "tenvattu";
            c.ValueMember = "tenvattu";
        }
        private void hienthiphieunhap(CPhieunhap x)
        {
            txtmaphieunhap.Text = x.Maphieunhap;
            txttennguoinhap.Text = x.Tennguoinhap;
            dtpngaynhap.Value = x.Ngaynhap;
            dgv.Rows.Clear();
            foreach (CChitietphieunhap y in x.Chitietphieunhap)
            {
                DataGridViewRow r = dgv.Rows[dgv.Rows.Add()];
                r.Cells["loaivattu"].Value = y.Vattu.Loaivattu.Tenloai.ToString();
                r.Cells["vattu"].Value = y.Vattu.Tenvattu.ToString();
                r.Cells["soluong"].Value = y.Soluong.ToString();
            }
        }
        private void dgv_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            switch (e.ColumnIndex)
            {
                case 0:
                    List<CLoaivattu> ds = xulyloaivattu.getdsloaivattu();
                    hienthidsloaivattu(ds, e.RowIndex);
                    break;
                case 1:
                    DataGridViewComboBoxCell c = (DataGridViewComboBoxCell)dgv.Rows[e.RowIndex].Cells[0];
                    string tenloai = c.Value.ToString();
                    CLoaivattu loaivattu = xulyloaivattu.tim(tenloai);
                    List<CVattu> dsvattu = xulyvattu.getdsvattu(loaivattu.Maloai);
                    hienthidsvattu(dsvattu, e.RowIndex);
                    break;
            }
        }

        private void btnthem_Click(object sender, EventArgs e)
        {
            CPhieunhap p = new CPhieunhap();
            p.Maphieunhap = txtmaphieunhap.Text;
            p.Ngaynhap = dtpngaynhap.Value;
            p.Tennguoinhap = txttennguoinhap.Text;
            List<CChitietphieunhap> list = new List<CChitietphieunhap>();
            foreach (DataGridViewRow r in dgv.Rows)
            {
                if (r.Cells["loaivattu"].Value == null) break;
                CChitietphieunhap c = new CChitietphieunhap();
                c.Maphieunhap = p.Maphieunhap;
                string tenvattu = r.Cells["vattu"].Value.ToString();
                c.Vattu = xulyvattu.tim(tenvattu);
                c.Soluong = int.Parse(r.Cells["soluong"].Value.ToString());
                list.Add(c);
            }
            p.Chitietphieunhap = list;
            if (xulyphieunhap.them(p) == false) MessageBox.Show("khong them duoc");
            hienthidsphieunhap();
        }
        private void btnxoa_Click(object sender, EventArgs e)
        {
            string maphieunhap = txtmaphieunhap.Text;
            xulyphieunhap.xoa(maphieunhap);
            hienthidsphieunhap();
        }
        private void btnsua_Click(object sender, EventArgs e)
        {
            CPhieunhap p = new CPhieunhap();
            p.Maphieunhap = txtmaphieunhap.Text;
            p.Ngaynhap = dtpngaynhap.Value;
            p.Tennguoinhap = txttennguoinhap.Text;
            List<CChitietphieunhap> list = new List<CChitietphieunhap>();
            foreach (DataGridViewRow r in dgv.Rows)
            {
                if (r.Cells["loaivattu"].Value == null) break;
                CChitietphieunhap c = new CChitietphieunhap();
                c.Maphieunhap = txtmaphieunhap.Text;
                string tenvattu = r.Cells["vattu"].Value.ToString();
                c.Vattu = xulyvattu.tim(tenvattu);
                c.Soluong = int.Parse(r.Cells["soluong"].Value.ToString());
                list.Add(c);
            }
            p.Chitietphieunhap = list;
            xulyphieunhap.sua(p);
            hienthidsphieunhap();

        }

        private void lstphieunhap_SelectedIndexChanged(object sender, EventArgs e)
        {
            foreach (ListViewItem lvi in lstphieunhap.SelectedItems)
            {
                string maphieunhap = lvi.SubItems[0].Text;
                CPhieunhap x = xulyphieunhap.tim(maphieunhap);
                foreach (CChitietphieunhap a in x.Chitietphieunhap)
                {
                    a.Vattu = xulyvattu.tim(a.Mavattu);
                    a.Vattu.Loaivattu = xulyloaivattu.tim(a.Vattu.Loaivattu.Maloai);
                }
                if (x != null)
                    hienthiphieunhap(x);
                break;

            }
        }

        private void dgv_DataError(object sender, DataGridViewDataErrorEventArgs e)
        {
            if (e.Exception.Message == "DataGridViewComboBoxCell value is not valid.")
            {
                object value = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
                if (!((DataGridViewComboBoxColumn)dgv.Columns[e.ColumnIndex]).Items.Contains(value))
                {
                    ((DataGridViewComboBoxColumn)dgv.Columns[e.ColumnIndex]).Items.Add(value);
                    e.ThrowException = false;
                }
            }
        }
    }
}
